如何在 SPSS 中计算年龄?
作者:Ruben Geert van den Berg,发表于 SPSS 博客
本教程将介绍如何在 SPSS (Statistical Product and Service Solutions) 中使用出生日期计算年龄。
一个课程由 183 名学生进行评估。数据存储在 course_evaluation.sav 文件中,部分数据如下所示。老师想知道学生的平均年龄,但我们只有他们的出生日期。
1. 确保出生日期是日期变量
首先,我们需要检查出生日期是否为真正的日期变量 (date variable)。在变量视图 (variable view)中,我们可以很容易地看到这里的情况正是如此。有时,日期在 SPSS 中最终会变成字符串变量 (string variable),如果是这样,我们需要先将它们转换为日期变量。有关如何执行此操作的一些示例,请参见 将字符串转换为日期变量 (Convert String to Date Variable)。
2. 选择比较日期
由于(平均)年龄实际上每秒都在变化,我们需要回答“在哪个时间点的年龄?” 最明显的选择是数据收集时的年龄。您的数据中可能存在这样的完成日期。如果没有,我们将进行有根据的猜测。
3. 使用已知完成日期计算年龄
我们的数据包含一个名为 cdate
的变量,其中包含问卷的完成日期。我们现在可以使用以下语法轻松计算年龄,并且我们将检查其直方图以确保结果具有合理的分布。
***如果已知完成日期,则计算年龄。**
compute age = datediff(cdate,bdate,'days') / 365.25.
***检查结果是否具有合理的分布。**
frequencies age
/format notable
/histogram.
***所有年龄在 19 岁到 27 岁之间。看起来很完美。**
结果
所以我们基本上计算了出生日期和完成日期之间的天数,然后将其除以 365.25,这是一年中的平均天数。您可能想知道为什么我们不直接使用 DATEDIFF(cdate,bdate,'years')
。我们将在稍后讨论。
4. 使用未知完成日期计算年龄
如果我们的数据中没有完成日期,我们将尝试做出一个好的猜测。假设我们猜测是 2015 年 1 月 1 日。我们可以使用 date.dmy(1,1,2015)
将其转换为 SPSS 日期值,从而在我们的数据集中创建一个猜测的完成日期作为新变量。或者,我们可以将此函数直接插入到我们的年龄计算公式中,如下所示。
***如果必须猜测完成日期,则计算年龄。**
compute age2 = datediff(date.dmy(1,1,2015),bdate,'days') / 365.25.
execute.
天或年?
那么,为什么我们要提取天数并将其除以 365.25,这是一年中的平均天数?简单的原因是 SPSS 会截断 DATEDIFF 的结果。这意味着一个 20 岁零 364 天的人将被分配一个 20.00 岁的年龄,这几乎差了整整一年。
***计算年龄 - 错误的方法。**
compute age3 = datediff(cdate,bdate,'years').
execute.
结果
这可能使您确信直接提取年份不是一个好主意:平均而言,我们这样做会 低估 年龄半年。为了简单起见,我们将假设生日在一年中均匀分布,我认为这大致成立。
最后的说明
如果您不想看到任何小数位,那么最好的选择可能是运行 formats age (f3).
,这将_显示_所有年龄为整数。或者,如果您希望年龄_是_整数,您可以运行 compute age = rnd(age).
,但这显然会引入一些误差 - 不好,但不如前面提到的偏差那么糟糕。